Security is an important consideration for processing systems such as microcontrollers. For example, it may be desirable to ensure that a processor only executes a specific task which is described by a piece of executable program code (or equivalent set of instructions, such as a script for example). However, the code and/or execution of the code may be may be subject to attacks. Attacks may include any of the following exemplary list:                unauthorized modification of stored program code;        modification of code during execution;        code dumping (e.g. reading out code for the purposes of reverse engineering);        unauthorized changing of memory access privileges;        execution of unauthorized code from data segments        
Firmware, for example basic input/output system (BIOS) code or core system software code, is typically operative to recognize and initialize hardware subsystems and components of a processing system or electronic device. Consequently, reverse engineering of firmware by a third-party may provide indications of hardware architecture of a system employing the firmware integrated circuit. Also, successful attacks (such as those listed above) on firmware may enable a third-party to alter the operation of a processing system, prevent the processing system from operating correctly, and/or transmit viruses to components or other systems/devices.
It is known to protect firmware using hardware-based security, such as storing firmware in non-volatile memory (such as Read-Only-Memory, ROM, for example) so that it cannot be modified within the memory. However, this may not provide adequate protection from a third-party accessing the firmware and analysing it for undesired or unauthorized purposes.
Such considerations are important in the field of third-party development where a third-party developer is left to develop and debug an application directly on a processing system. For such development, the processing system may require the execution of embedded firmware provided by the manufacturer and used during the application, but it may be desirable to hide/protect the firmware from the third-party developer during application execution for security reasons.